package cc.linker.steplink.crm.dao;

import cc.linker.steplink.crm.domain.*;

import java.util.List;
import java.util.Map;

/**
 * @Description: 机器人用户画像dao层
 * @Author: wuhangfeng
 * @Date: Created in 2019/8/30 13:28
 * @Version: 1.8.3
 */
public interface RobotUserPortraitDao {

    /**
     * 获取文章推送记录
     * @return 记录列表
     */
    List<ArticlePushRecord> getArticlePushUserRecords(Map<String,Object> params);

    /**
     * @Description: 获取用户阶段
     * @Param: params 参数map customerId
     * @Return: 用户标签阶段  1：标签未满   2：标签已满
     * @Author: 锋
     * @Date: 2019/9/2 14:58
     * @Version: 1.8.3
     */
    int getCustomerStage(Map<String, Object> params);

    /**
     * @Description: 获取用户打开状态
     * @Param: params 参数map customerId：用户ID    articleId：文章ID
     * @Return: 打开标识   1：打开  0：未打开
     * @Author: 锋
     * @Date: 2019/9/2 14:58
     * @Version: 1.8.3
     */
    int getCustomerOpenTag(Map<String, Object> params);

    /**
     * @Description: 获取用户点赞状态
     * @Param: params 参数map customerId：用户ID    articleId：文章ID
     * @Return: 点赞标识   1：点赞  0：未点赞
     * @Author: 锋
     * @Date: 2019/9/2 14:58
     * @Version: 1.8.3
     */
    int getCustomerPraiseTag(Map<String, Object> params);

    /**
     * @Description: 获取用户对该文章的平均阅读时长
     * @Param: params 参数map customerId：用户ID    articleId：文章ID
     * @Return: 平均阅读时长（分）
     * @Author: 锋
     * @Date: 2019/9/2 14:58
     * @Version: 1.8.3
     */
    int getCustomerReadTime(Map<String, Object> params);

    /**
     * @Description: 获取该文章的平均阅读时长
     * @Param: params 参数map articleId：文章ID
     * @Return: 平均阅读时长（分）
     * @Author: 锋
     * @Date: 2019/9/2 14:58
     * @Version: 1.8.3
     */
    Integer getArticleReadTime(Map<String, Object> params);

    /**
     * @Description: 获取该文章的标签
     * @Param: params 参数map articleId：文章ID
     * @Return: 标签,多个;分隔
     * @Author: 锋
     * @Date: 2019/9/2 14:58
     * @Version: 1.8.3
     */
    String getArticleLabels(Map<String, Object> params);

    /**
     * @Description: 更新用户标签
     * @Param: params 参数map articleId：文章ID
     * @Return:
     * @Author: 锋
     * @Date: 2019/9/2 14:58
     * @Version: 1.8.3
     */
    void updateCustomerLabel(CustomerLabelPo customerLabelPo);

    /**
     * @Description: 更新用户标签等级
     * @Param: params 参数map customerId：用户ID  labelId标签ID   labelLevel标签等级
     * @Return:
     * @Author: 锋
     * @Date: 2019/9/2 14:58
     * @Version: 1.8.3
     */
    void updateCustomerLabelLevel(CustomerLabelPo customerLabelPo);

    /**
     * @Description: 更新用户推送频次
     * @Param: params 参数map customerId：用户ID  pushRate 推送频次
     * @Return:
     * @Author: 锋
     * @Date: 2019/9/2 14:58
     * @Version: 1.8.3
     */
    void updateCustomerPushRate(Map<String,Object> params);

    /**
     * @Description: 用户的标签等级
     * @Param: params 参数map customerId：用户ID  labelId 标签ID
     * @Return:
     * @Author: 锋
     * @Date: 2019/9/2 14:58
     * @Version: 1.8.3
     */
    Integer getCustomerLabelLevel(Map<String, Object> params);

    /**
     * @Description: 获取开启机器人的机构
     * @Param: robotkey 机器人类型  client 客户机器人  market 营销机器人
     * @Return:
     * @Author: 锋
     * @Date: 2019/9/2 14:58
     * @Version: 1.8.3
     */
    List<OrgRobotPo> getOrgRobots(Map<String, Object> params);

    /**
     * @Description: 获取机构下的客户
     * @Param: orgId 机构ID
     * @Return:
     * @Author: 锋
     * @Date: 2019/9/2 14:58
     * @Version: 1.8.3
     */
    List<Customer> getAllOrgCustomer(Map<String, Object> params);

    /**
     * @Description: 更新用户活跃等级
     * @Param: change 1上调，-1下调
     * @Return:
     * @Author: 锋
     * @Date: 2019/9/2 14:58
     * @Version: 1.8.3
     */
    int updateCustomerActive(Map<String,Object> params);

    /**
     * @Description: 获取用户一天互动行为数量
     * @Param: customerId客户ID startTime 开始时间  endTime 结束时间
     * @Return:
     * @Author: 锋
     * @Date: 2019/9/2 14:58
     * @Version: 1.8.3
     */
    int getCustomerOneDayRecord(Map<String, Object> params);

    /**
     * @Description: 获取用户7天互动行为数量
     * @Param: customerId客户ID startTime 开始时间  endTime 结束时间
     * @Return:
     * @Author: 锋
     * @Date: 2019/9/2 14:58
     * @Version: 1.8.3
     */
    int getCustomerSevenDayRecord(Map<String, Object> params);

    /**
     * @Description: 获取智能调整用户画像动态
     * @Param:
     * @Return:
     * @Author: 锋
     * @Date: 2019/9/2 14:58
     * @Version: 1.8.3
     */
    void insertRobotUserPortraitDynamic(Map<String, Object> record);

    /**
     * @Description: 获取智能调整详情
     * @Param:
     * @Return:
     * @Author: 锋
     * @Date: 2019/9/2 14:58
     * @Version: 1.8.3
     */
    void insertRobotUserPortraitDetail(Map<String, Object> record);

    /**
     * @Description: 获取客户针对文章的数据
     * @Param:
     * @Return:
     * @Author: 锋
     * @Date: 2019/9/2 14:58
     * @Version: 1.8.3
     */
    List<Map<String, Object>> getArticleCustomerData(Map<String, Object> params);

    Map<String,Object> getArticleInfo(Map<String, Object> params);

    int getCustomerActiveLevel(Map<String, Object> params);

    List<OrgRobotPo> getAllOrgs(Map<String, Object> params);
}
